home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / VDIRASTE.D < prev    next >
Encoding:
Modula Definition  |  1990-10-09  |  4.5 KB  |  103 lines

  1. DEFINITION MODULE VDIRasters;
  2.  
  3.  
  4. (*  Megemax-Modula 2 GEM-Library :  Die VDI Rasterfunktionen
  5.  *
  6.  *  Autor: Manuel Chakravarty           Erstellt :  04.11.87
  7.  *
  8.  *  Version   2.2     V#0011
  9.  *)
  10.  
  11. (*      Die Routinen dieses Moduls bieten zum einen die Möglichkeit,
  12.  *      beliebige Grafikausschnitte zu verschieben und zum anderen
  13.  *      kann die Farbe beliebiger Pixel ermittelt werden.
  14.  *      Der Arbeitsbereich der Kopierroutinen ist nicht auf die VDI
  15.  *      Geräte beschränkt, vielmehr kann man nahezu unbeschränkt auf
  16.  *      beliebige Speicherbereiche zugreifen. Dazu ist es aber nötig
  17.  *      den Aufbau des zu verwendenden Speicherausschnittes in einem
  18.  *      Memory Form Definition Block (kurz: MFDB) zu beschreiben. Den
  19.  *      von dem MFDB beschriebenen Speicher kann man sich als einen
  20.  *      in seiner Größe (fast) frei wählbaren Bildschirmspeicher vor-
  21.  *      stellen. Diese Assoziation erklärt auch die im MFDB-Record
  22.  *      gewählten Field-Bezeichner.
  23.  *      Eine genauere Beschreibung des MFDB befindet sich im Modul
  24.  *      'GrafBase'.
  25.  *
  26.  *      Die beiden Routinen 'CopyOpaque' und 'CopyTrans' werden, falls
  27.  *      eingebaut und aktiviert vom Blitter ausgeführt.
  28.  *)
  29.  
  30.  
  31. FROM    GrafBase IMPORT Point, Rectangle, MemFormDef, PtrMemFormDef,
  32.                         WritingMode, BitOperation;
  33.  
  34. FROM    GEMEnv  IMPORT  DeviceHandle;
  35.  
  36.  
  37. PROCEDURE CopyOpaque (handle                : DeviceHandle;
  38.                       sourceMem, destMem    : PtrMemFormDef;
  39.                       sourceFrame, destFrame: Rectangle;
  40.                       mode                  : BitOperation);
  41.                      
  42.         (*  Diese Routine kopiert einen beliebigen Ausschnitt des Quell-
  43.          *  bereichs an eine frei wählbare Stelle des Zielbereichs.
  44.          *  Dafür müßen beide Bereiche im gerätespezifischen Format vor-
  45.          *  liegen und sie müßen die gleiche Anzahl an Bitebenen (planes)
  46.          *  besitzen.
  47.          *
  48.          *  'sourceMem'   -- Quellbereich
  49.          *  'destMem'     -- Zielbereich
  50.          *  'sourceframe' -- bestimmt, welcher Teil des Quellbereichs
  51.          *                   nun kopiert wird, indem dort einfach das zu
  52.          *                   kopierende Rechteck angegeben wird.
  53.          *  'destframe'   -- ..des Zielbereichs..
  54.          *  'mode'        -- bestimmt, auf welche Art beide Bereiche ver-
  55.          *                   knüpft werden.
  56.          *)
  57.  
  58. PROCEDURE CopyTrans (handle                : DeviceHandle;
  59.                      sourceMem, destMem    : PtrMemFormDef;
  60.                      sourceFrame, destFrame: Rectangle;
  61.                      mode                  : WritingMode;
  62.                      setCol, unsetCol      : CARDINAL);
  63.                     
  64.         (*  Bei dieser Procedur wird ein einfarbiger Rechteckbereich
  65.          *  auf einen mehrfarbigen Rechteckbereich  kopiert.
  66.          *
  67.          *  'sourceMem'   -- Quellbereich. Muß hier einfarbig sein, d.h.
  68.          *                   er darf nur aus einer Bitebene (plane) be-
  69.          *                   hen.
  70.          *  'destMem'     -- Zielbereich ist beliebig
  71.          *  'sourceframe' -- bestimmt, welcher Teil des Quellbereichs
  72.          *                   nun kopiert wird, indem dort einfach das zu
  73.          *                   kopierende Rechteck angegeben wird.
  74.          *  'destframe'   -- ..des Zielbereichs..
  75.          *  'mode'        -- Schreibmodus
  76.          *  'unsetCol'    -- die ungesetzten Bits werden mit der hier ange-
  77.          *                   gebenen Farbe kopiert.
  78.          *  'setCol'      -- die gesetzten Bits werden mit der hier angege-
  79.          *                   benen Farbe kopiert.
  80.          *)
  81.          
  82. PROCEDURE TransformForm (    handle            : DeviceHandle;
  83.                          VAR sourceMem, destMem: MemFormDef);
  84.  
  85.         (*  Damit können Rasterbereiche vom gerätespezifischen in das
  86.          *  Standardformat umgewandelt werden und umgekehrt.
  87.          *)
  88.  
  89. PROCEDURE PixelState (    handle: DeviceHandle;
  90.                           toTest: Point;
  91.                       VAR color : CARDINAL;
  92.                       VAR set   : BOOLEAN);
  93.                      
  94.         (*  Hiermit kann der Zustand eines einzelnen Pixels erfragt wer-
  95.          *  den.
  96.          *
  97.          *  'toTest'    -- Enthält die Koordinaten des Pixels
  98.          *  'color'     -- liefert den aktuellen Farbindex des Pixels
  99.          *  'set'       -- '=TRUE', so ist das Pixel gesetzt, sonst be-
  100.          *                 sitzt es die Hintergrundfarbe.
  101.          *)
  102.  
  103. END VDIRasters.